Nowadays, with the development of integrated circuit (IC) technology, a variety of electronic devices have emerged, for example, a palmtop computer, a smart phone, an embedded system, a portable computer, etc., on which a full-size hardware keyboard can not be equipped due to the constraints of dimension, manufacture cost, etc. As a result, it is challenging to input on such devices.
A keyboard of conventional mobile phones or portable devices employs compound keys, each associated with a plurality of characters. With supporting software and dictionary files, the word that a user desires to input is predicted according to the sequence of the keys pressed by the user. A common inputting method is to create a trie tree for the sequence of pressed keys and a particular sequence of pressed keys may fixedly correspond to a plurality of words. When the user presses keys, the trie tree is searched according to the sequence of pressed keys to find and display a plurality of corresponding candidate words on a display for user to choose. Such a method is closely associated with the keyboard layout concerning dictionary structure, such that whenever the keyboard layout is changed there is a need to reconstruct the dictionary structure and even to redesign the software. Particularly, for a software keyboard on a touch screen, the method has poor flexibility. Firstly, the keyboard layout can not be changed flexibly. If the layout of letters is changed, for example, from a QWERTY standard computer keyboard layout (as commonly used in USA and Asia) to an AZERTY keyboard layout (as commonly used in Europe), the software and dictionary file have to be rewritten entirely. Secondly, it can not achieve smart correction. If the user presses one or more keys in error, it can not display the corrected word. Thirdly, it can not input the words not included in the dictionary, for example, some names of person, addresses, Email addresses, specific terms, etc.
Meanwhile, due to the reduced size of keyboard, the user is prone to press by mistake, particularly to press the adjacent keys. Accordingly, it is very useful to achieve a function of auto-correction in software. One commonly used auto-correction method utilizes the search for a list of common errors to achieve the auto-correction function. For example, users usually misspell the word ‘can’ into ‘csn’, since on the keyboard of QWERTY layout, character ‘a’ is located next to character ‘s’, which tends to be pressed by mistake. The method refers to a predetermined list of common errors which comprises sequences of pressed key in error and correct words, for example, ‘csn’→‘can’, to modify a sequence of pressed keys in error into a correct word. However, the limitation of the method is apparent where it can determine only limited known mistake types but can not make effective recognition of more general adjacent key press errors, and it is readily subject to misjudgment.
Another auto-correction method is employed which determines the position of a contact point on the touch screen, computes the distances of the contact point to each key, computes weighted distances of the sequence of pressed keys to every possible word, and chooses the word in the dictionary which has the shortest weighted distance. While feasible in theory, it is too complex to be achieved in practice considering the limited computing capability of general portable devices.